package test03.field;

import java.lang.reflect.Field;

/**
 * 反射 API 操作 - 字段（属性）操作 - Field
 *
 * @Author zqx
 * @Date 2024-03-26
 */
public class MainTest02 {
    public static void main(String[] args) throws Exception {
        // 第一：获取类的 Class 对象
        Class<?> clazz = Class.forName("org.ch03.entity.Student");

        // 第二：实例化对象 - 缺省构造方法实例化对象
        // Constructor<?> constructor = clazz.getConstructor();
        // Object obj = constructor.newInstance();
        Object obj = clazz.getConstructor().newInstance();

        // 1.获取私有的字段（属性）
        Field field = clazz.getDeclaredField("name");

        // 2.设置私有的字段可访问
        field.setAccessible(true);

        // 3.读取私有的字段相关的信息 - 略
        // System.out.println(field.getName());

        // 4.调用字段对象的 set 方法，实现数据的初始化工作
        // 字段对象.set(对象, 数据) - 对象.setXxx(数据)
        field.set(obj,"王五") ;

        // 5.通过字段对象的 get 方法，获取字段的数据
        // 字段对象.get(对象) - 对象.getXxx()
        Object value = field.get(obj);
        System.out.println(value);



    }
}
